/*
 ============================================================================
 Name        : LibreriaPPD.h
 Author      : SOogle
 Version     : 1.0
 Copyright   : All rights reserved
 Description : FUSELAGE - FUSE FAT32 FILE SYSTEM
 ============================================================================
 */

#ifndef LIBRERIAPPD_H_
#define LIBRERIAPPD_H_

/*
 ============================================================================
 TIPO DE DATOS UTILIZADOS
 ============================================================================
 */

typedef struct{
	char bufferSector[BLOQUE_512];
}__attribute__ ((__packed__)) PPD_SECTOR_DEVUELVE;

/*
 ============================================================================
 FUNCIONES DE SIMULACION
 ============================================================================
 */

float tiempoEntreSectores(PPD_CHS sector1,PPD_CHS sector2);
int32_t *SectoresRecorro(PPD_CHS sectorAnterior, PPD_CHS sector);
int32_t diferenciaEntreSectores(PPD_CHS sector1,PPD_CHS sector2);
int32_t ppd_CHStoLBA(PPD_CHS structRecibido);
PPD_CHS ppd_LBAToCHS(int32_t sectorRecibido);
nipc procesoPedidoElegido(t_pedido pedidoPorProcesar, int32_t *colaLog);

/*
 ============================================================================
 FUNCIONES QUE TRABAJAN SOBRE EL ARCHIVO MAPEADO
 ============================================================================
 */

char *getSector(char * handlerDiscoMapeado, int32_t sector );
nipc armoNIPC(t_pedido pedidoPorProcesar);
char* charLimpio();
int32_t tamanioDisco();
int32_t cantidadTotalDeSectores();
int32_t cerrarArchivo();
char* ppd_abrirArchivo();
PPD_SECTOR_DEVUELVE ppd_leerSector(int32_t sectorARetornar,char* handlerArchivoMapeado);
int32_t ppd_escribirSector(int32_t sectorAEscribir, char* bufferSector,char* handlerArchivoMapeado);

#endif /* LIBRERIAPPD_H_ */
